package cn.cocho.android.mc.comp.button;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.RadioButton;

import cn.cocho.android.mc.R;

public class McTabButton extends RadioButton {

	private static final String CHECKED_TEXT_COLOR = "tabButton_check_text_color";// 选中时字体的颜色
	private static final String TEXT_COLOR = "tabButton_text_color";// 字体的颜色
	private static final String DISABLE_TEXT_COLOR = "tabButton_disable_text_color";// 禁用时的颜色

	private static final String CHECKED_BG = "tabButton_checked_bg";// 选中时字体的颜色
	private static final String UNCHECKED_BG = "tabButton_unchecked_bg";// 字体的颜色

	private int normalColor = 0;
	private int disableColor;
	private int checkedColor;

	private Drawable checkedBg;
	private Drawable uncheckedBg;

	private AttributeSet attrs;

	public McTabButton(Context context) {
		super(context);
	}

	public McTabButton(Context context, AttributeSet attrs, int defstyle) {
		super(context, attrs, defstyle);
	}

	// public TbcTabButton(Context context, AttributeSet attrs) {
	// super(context, attrs);
	// this.attrs = attrs;
	// initColorStates(context, attrs);
	// initRadioButton();
	// }

	// *↑
	public McTabButton(Context context, AttributeSet attrs) {
		super(context, attrs);
		this.attrs = attrs;
		TypedArray tdarr = context.obtainStyledAttributes(attrs,
				R.styleable.McTabButton);
		initColorStates(tdarr);
		initRadioButton(tdarr);
		tdarr.recycle();
		updateState();
	}

	 /**
	 * 初始化单选按钮
	 *
	 * @author HAIKANG SONG
	 * @time 2013-5-14下午2:20:44
	 */
	// public void initRadioButton() {
	// checkedBg = getDrawable(checkedBg, CHECKED_BG);
	// uncheckedBg = getDrawable(uncheckedBg, UNCHECKED_BG);
	// updateState();
	// }

	//*↑
	public void initRadioButton(TypedArray tdarr) {
		checkedBg = tdarr
				.getDrawable(R.styleable.McTabButton_tabButton_checked_bg);
		uncheckedBg = tdarr
				.getDrawable(R.styleable.McTabButton_tabButton_unchecked_bg);
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		super.onTouchEvent(event);
		if (!isEnabled()) {
			return false;
		}

		if (!isChecked()) {
			setChecked(true);
		}
		return false;
	}

	/**
	 * 改变单选按钮当前的状态
	 * 
	 * @author HAIKANG SONG
	 * @time 2013-5-14下午4:26:05
	 */
	private void updateState() {
		if (!isChecked() && isEnabled()) {
			setTextColor(normalColor);
			setBackgroundDrawable(uncheckedBg);
		} else if (isChecked() && isEnabled()) {
			setTextColor(checkedColor);
			setBackgroundDrawable(checkedBg);
		} else if (!isChecked() && !isEnabled()) {
			setTextColor(disableColor);
		} else if (isChecked() && !isEnabled()) {
			setTextColor(disableColor);
		}
	}

//	/**
//	 * 获得指定属性背景图片对象
//	 * 
//	 * @param drawable
//	 *            背景图片对象
//	 * @param eventName
//	 *            属性名称
//	 * @return
//	 * @author HAIKANG SONG
//	 * @time 2013-5-14下午4:27:26
//	 */
//	private Drawable getDrawable(Drawable drawable, String eventName) {
//		if (drawable == null) {
//			Resources resources = getResources();
//			int drawableId = attrs.getAttributeResourceValue(CompUtils.NS_TBC,
//					eventName, 0);// 读取该属性的值
//			if (drawableId > 0) {
//				drawable = resources.getDrawable(drawableId);
//			}
//		}
//		return drawable;
//	}

//	private void initColorStates(Context context, AttributeSet attrs) {
//		Resources resources = getResources();
//		TypedArray attrArray = context.obtainStyledAttributes(attrs,
//				R.styleable.TbcRadioButton);
//
//		int normalStateId = attrs.getAttributeResourceValue(CompUtils.NS_TBC,
//				TEXT_COLOR, 0);
//		if (normalStateId <= 0) {
//			normalStateId = attrArray.getResourceId(
//					R.styleable.TbcRadioButton_radioButton_text_color, 0);
//		}
//
//		if (normalStateId > 0) {
//			normalColor = resources.getColor(normalStateId);
//		}
//
//		int pressedStateId = attrs.getAttributeResourceValue(CompUtils.NS_TBC,
//				CHECKED_TEXT_COLOR, 0);
//		if (pressedStateId <= 0) {
//			pressedStateId = attrArray.getResourceId(
//					R.styleable.TbcRadioButton_radioButton_check_text_color, 0);
//		}
//
//		if (pressedStateId > 0) {
//			checkedColor = resources.getColor(pressedStateId);
//		} else {
//			checkedColor = normalColor;
//		}
//
//		int disableStateId = attrs.getAttributeResourceValue(CompUtils.NS_TBC,
//				DISABLE_TEXT_COLOR, 0);
//		if (pressedStateId <= 0) {
//			disableStateId = attrArray.getResourceId(
//					R.styleable.TbcRadioButton_radioButton_disable_text_color,
//					0);
//		}
//
//		if (disableStateId > 0) {
//			disableColor = resources.getColor(disableStateId);
//		} else {
//			disableColor = normalColor;
//		}
//		attrArray.recycle();
//	}

	//*↑
	private void initColorStates(TypedArray tdarr) {
		normalColor = tdarr.getColor(R.styleable.McTabButton_tabButton_text_color, 0);
		disableColor = tdarr.getColor(R.styleable.McTabButton_tabButton_disable_text_color, 0);
		checkedColor = tdarr.getColor(R.styleable.McTabButton_tabButton_check_text_color, 0);
	}

	@Override
	public void setEnabled(boolean enabled) {
		super.setEnabled(enabled);
		updateState();
	}

	@Override
	public void setChecked(boolean checked) {
		super.setChecked(checked);
		updateState();
	}

}
